7.6 f90_unix_file
このモジュールは ISO/IEC 9945-1:1990 Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language] で詳細に規定される機能に対するFortran APIの一部を提供するものです。
このモジュール中の関数はセクション5.6 ファイルの特徴に由来するものです。
エラー処理についてはF90_UNIX_ERRNO
に記述されています。
省略可能なERRNO
引数を用いた手続きに対し、エラーが生じERRNO
が存在しなかった場合には、プログラムは終了させられる点に注意してください。
このモジュール中のすべての手続きは総称的なものです。いくつかは個別的でもあります が、これは将来のリリースで変わる可能性があります。
7.6.1 パラメータ
INTEGER(int32),PARAMETER :: F_OKファイルが存在するかどうかのチェック(
ACCESS
参照)を要求するフラグ。
USE F90_UNIX_ENV,ONLY:ID_KINDこのパラメータに関する記述については
F90_UNIX_ENV
の項を参照。
USE F90_UNIX_DIR,ONLY:MODE_KINDこのパラメータに関する記述については
F90_UNIX_DIR
の項を参照。
INTEGER(int32),PARAMETER :: R_OKファイルが読めるかどうかのチェック(
ACCESS
参照)を要求するフラグ。
INTEGER(MODE_KIND),PARAMETER :: S_IRGRPグループに対する読み取り許可(
STAT_T
参照)を示すファイルモードビット。
INTEGER(MODE_KIND),PARAMETER :: S_IROTHその他に対する読み取り許可(
STAT_T
参照)を示すファイルモードビット。
INTEGER(MODE_KIND),PARAMETER :: S_IRUSRユーザに対する読み取り許可(
STAT_T
参照)を示すファイルモードビット。
INTEGER(MODE_KIND),PARAMETER :: S_IRWXGファイルモードからグループアクセス権限ビットを選択するためのマスク (
STAT_T
参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IRWXOファイルモードからその他のアクセス権限ビットを選択するためのマスク (
STAT_T
参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IRWXUファイルモードからユーザアクセス権限ビットを選択するためのマスク (
STAT_T
参照)。
INTEGER(MODE_KIND),PARAMETER :: S_ISGIDファイルがset-group-ID(
STAT_T
参照)であることを示すファイルモード
ビット。
INTEGER(MODE_KIND),PARAMETER :: S_ISUIDファイルがset-user-ID(
STAT_T
参照)であることを示すファイルモード
ビット。
INTEGER(MODE_KIND),PARAMETER :: S_IWGRPグループの書き込み許可を示すファイルモードビット(
STAT_T
参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IWOTHその他の書き込み許可を示すファイルモードビット(
STAT_T
参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IWUSRユーザの書き込み許可を示すファイルモードビット(
STAT_T
参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IXGRPグループの実行許可を示すファイルモードビット(
STAT_T
参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IXOTHその他の実行許可を示すファイルモードビット(
STAT_T
参照)。
INTEGER(MODE_KIND),PARAMETER :: S_IXUSRユーザの実行許可を示すファイルモードビット(
STAT_T
参照)。
USE F90_UNIX_ENV,ONLY :: TIME_KINDこのパラメータに関する記述については
F90_UNIX_ENV
の項を参照。
INTEGER(int32),PARAMETER :: W_OKファイルが書けるかどうかのチェック(
ACCESS
参照)を要求するフラグ。
INTEGER(int32),PARAMETER :: X_OKファイルが実行可能かどうかのチェック(
ACCESS
参照)を要求するフラグ。
7.6.2 型
TYPE stat_t INTEGER(MODE_KIND) st_mode INTEGER(...) st_ino INTEGER(...) st_dev INTEGER(...) st_nlink INTEGER(id_kind) st_uid INTEGER(id_kind) st_gid INTEGER(...) st_size INTEGER(TIME_KIND) st_atime, st_mtime, st_ctime END TYPEファイルの特性を保持している構造体。
ST_MODE
- ファイルモード(ユーザ/グループ/その他に対する読み取り/書き込み/実行許可、 及びset-group-ID, set-user-IDビット)。
ST_INO
- ファイルのシリアル番号。
ST_DEV
- ファイルが存在している装置に対するID。
ST_NLINK
- ファイルに対するリンク(
F90_UNIX_DIR
,LINK
操作参照)の数。 ST_UID
- ファイル所有者のユーザ番号。
ST_GID
- ファイルのグループ番号。
ST_SIZE
- バイト単位のファイルサイズ(通常ファイルのみ)。
ST_ATIME
- 最後にアクセスした時刻。
ST_MTIME
- 最後に変更を加えた時刻。
ST_CTIME
- 最後にファイル状態が変更された時刻。
TYPE UTIMBUF INTEGER(time_kind) actime, modtime END TYPE
UTIME
との交信用時刻値を保持するためのデータ型。
ACTIME
はST_ATIME
に対する、MODTIME
はST_MTIME
に
対する新たな値を意味しています。
7.6.3 手続き
PURE SUBROUTINE access(path,amode,errno) CHARACTER(*),INTENT(IN) :: path INTEGER(*),INTENT(IN) :: amode INTEGER(error_kind),INTENT(OUT) :: errno
AMODE
の値(F_OK
か、またはR_OK
, W_OK
, X_OK
の組合せでなくてはなりません)に従ってファイルのアクセス権限ビットをチェック
します。後者の場合、値は加算、または組込み関数IOR
によって結合されます。
アクセス権限ビットのチェック結果はERRNO
中に応答として返されます。アク
セス可(すなわちファイルがF_OK
として存在している、あるいはR_OK
等の組合せによって要求されたアクセスがすべて許可されている)の場合は0、アク
セス不可の場合はその理由を示すエラーコードがセットされます。
アクセス拒否のコードにはEACCES
, ENAMETOOLONG
, ENOENT
,
ENOTDIR
, EROFS
があります(F90_UNIX_ERRNO
参照)。
AMODE
の値が不正だった場合にはエラーEINVAL
が返されます。
ACCESS
に関する問合せのほとんどはINQUIRE
文と等価です。特に:
CALL ACCESS(PATH,F_OK,ERRNO)
- は次の場合に限り成功(
ERRNO==0
)を応答します:
INQUIRE(FILE=PATH,EXIST=LVAR)
がLVAR
に対し.TRUE.
をセット する場合。 CALL ACCESS(PATH,R_OK,ERRNO)
- は次の場合に限り成功(
ERRNO==0
)を応答します:
INQUIRE(FILE=PATH,READ=CHVAR)
がCHVAR
に対し'YES'
をセット する場合。 CALL ACCESS(PATH,W_OK,ERRNO)
- は次の場合に限り成功(
ERRNO==0
)を応答します:
INQUIRE(FILE=PATH,WRITE=CHVAR)
がCHVAR
に対し'YES'
をセット する場合。 CALL ACCESS(PATH,IOR(W_OK,R_OK),ERRNO)
- は次の場合に限り成功(
ERRNO==0
)を応答します:
INQUIRE(FILE=PATH,READWRITE=CHVAR)
がCHVAR
に対し'YES'
をセット する場合。
ACCESS
が拒否理由を応答として返す点、ファイルの実行可能性
をテストできる点にあります。
SUBROUTINE CHMOD(PATH,MODE,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(*),INTENT(IN) :: MODE INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOファイルモード(
ST_MODE
)をMODE
に設定します。
起りうるエラーにはEACCES
, ENAMETOOLONG
, ENOTDIR
,
EPERM
, EROFS
があります(F90_UNIX_ERRNO
参照)。
SUBROUTINE CHOWN(PATH,OWNER,GROUP,ERRNO) CHARACTER(*),INTENT(IN) :: PATH INTEGER(id_kind),INTENT(IN) :: OWNER, GROUP INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOファイル
PATH
の所有者(ST_UID
)をOWNER
に、グループ番号
(ST_GID
)をGROUP
に変更します。
起りうるエラーにはEACCES
, EINVAL
, ENAMETOOLONG
,
ENOTDIR
, ENOENT
, EPERM
, EROFS
があります
(F90_UNIX_ERRNO
参照)。
SUBROUTINE FSTAT(LUNIT,BUF,ERRNO) INTEGER(*),INTENT(IN) :: LUNIT TYPE(stat_t),INTENT(OUT) :: BUF INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNO論理装置
LUNIT
に接続されたファイルの特性がBUF
にセットされます。
LUNIT
が正しい論理装置番号でなかった場合、またはファイルに接続されて
いなかった場合、エラーEBADF
が発生します(F90_UNIX_ERRNO
参照)。
PURE LOGICAL(word) FUNCTION isblk(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルが“ブロックデバイス”であることを示すMODE
値である場合に
限り.TRUE.
が返されます。
PURE LOGICAL(word) FUNCTION ischr(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルが“キャラクタデバイス”であることを示すMODE
値である場合
に限り.TRUE.
が返されます。
PURE LOGICAL(word) FUNCTION isdir(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルがディレクトリ(フォルダ)であることを示すMODE
値である場合に
限り.TRUE.
が返されます。
PURE LOGICAL(word) FUNCTION isfifo(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルが“FIFO”(名前付き、または名前なしパイプ)であることを示す
MODE
値である場合に限り.TRUE.
が返されます。
PURE LOGICAL(word) FUNCTION isreg(mode) INTEGER(mode_kind),INTENT(IN) :: mode
ファイルが“通常”(regular)であることを示すMODE
値である場合に
限り.TRUE.
が返されます。
SUBROUTINE STAT(PATH,BUF,ERRNO) CHARACTER(*),INTENT(IN) :: PATH TYPE(stat_t),INTENT(OUT) :: BUF INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: ERRNOファイル
PATH
の特性がBUF
にセットされます。
起りうるエラーにはEACCES
, ENAMETOOLONG
, ENOENT
,
ENOTDIR
があります(F90_UNIX_ERRNO
参照)。
SUBROUTINE utime(path,times,errno) CHARACTER(*),INTENT(IN) :: path TYPE(utimbuf),OPTIONAL,INTENT(IN) :: times INTEGER(error_kind),OPTIONAL,INTENT(OUT) :: errno
PATH
で指定されるファイルのアクセス時刻、変更時刻をそれぞれ、
TIMES
のACTIME
, MODTIME
成分によって指定される値に設定
します。
起りうるエラーにはEACCES
, ENAMETOOLONG
, ENOENT
,
ENOTDIR
, EPERM
, EROFS
があります
(F90_UNIX_ERRNO
参照)。